//package com.hg.chapter8.jpa.repository;
//
//import com.hg.chapter8.jpa.entity.Person;
//import org.springframework.data.domain.Page;
//import org.springframework.data.domain.Pageable;
//import org.springframework.data.domain.Sort;
//import org.springframework.data.jpa.repository.JpaRepository;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.jpa.repository.Modifying;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.stereotype.Repository;
//
//import java.util.List;
//
////定义Person查询方法
////@Repository
//public interface PersonRepository extends JpaRepository<Person, Long>, JpaSpecificationExecutor<Person> {
//    //1.根据属性名查询
//
//    //1.1常规查询 根据属性名定义查询方法
//    List<Person> findByName(String name);
//
//    Integer deleteByName(String name);
//
//    List<Person> findByNameOrAge(String name, Integer age);
//
//    Integer countAllByAge(Integer age);
//
//    Integer removeByAge(Integer age);
//
//    //1.2限制结果数量
//    List<Person> findFirst10ByName(String name);
//
//    List<Person> findTop30ByName(String name);
//
//    //2.使用NamedQuery查询
//    List<Person> myFindByName(String name);
//
//    //3使用@Query查询
//    //3.1使用参数索引(Person是对象)
//    @Query("select p from Person p where p.age=?1")
//    List<Person> findByAge(Integer age);
//
//    //3.2使用命名参数
//    @Query("select p from Person p where p.sex= :sex")
//    List<Person> findBySex(String sex);
//
//    //3.3更新查询
//    @Modifying
//    @Query("update Person  p set p.name=?1")
//    //int返回影响行数
//    int setName(String name);
//
//    //4Specification
//
//    //5排序与分页
//    List<Person> findBySex(String sex, Sort sort);
//
//    Page<Person> findByAgeAndName(Integer age, String name, Pageable pageable);
//
//}
